#include<iostream> 
#include<stdlib.h>
#define MaxSize 500
using namespace std;
typedef struct{
	char data[MaxSize];
	int top;
}SqStack;
void DestroyStack(SqStack *&s);
bool Push(SqStack *&s,char e);
bool Pop(SqStack *&s,char &e);
void InitStack(SqStack *&s);
bool symmetry(char str[]);
int main(){
	char str[MaxSize];
	cin>>str;
	if(	symmetry(str))
	cout<<"yes";
	else
	cout<<"no";
	
}
bool symmetry(char str[]){
	int i;
	char e;
	SqStack *st;
	InitStack(st);
	for(i=0;str[i]!='\0';i++){
		Push(st,str[i]);
	}
	for(i=0;str[i]!='\0';i++){
		Pop(st,e);
		if(str[i]!=e){
			DestroyStack(st);
			return false;
		}
	}
	DestroyStack(st);
	return true;
}
void InitStack(SqStack *&s){
	s=(SqStack*)malloc(sizeof(SqStack));
	s->top=-1;
}
void DestroyStack(SqStack *&s){
	free(s);
}
bool Push(SqStack *&s,char e){
	if(s->top==MaxSize-1)
	return false;
	s->top++;
	s->data[s->top]=e;
	return true;
}
bool Pop(SqStack *&s,char &e){
	if(s->top==-1)
	return false;
	e=s->data[s->top];
	s->top--;
	return true;
}
